用Interface實作Call Back機制
當你有一些程式需要在背景執行時
總是會需要它通知你完成的時候
這時你就可以去規範那個背景程式你需要哪一些狀態通知
例如:
例如你大概知道某個下載程式會有成功與失敗的可能
並且你也需要知道到底是成功還是失敗
那你就可以先定義Interface給該下載程式使用
OnDownLoadCallback.java
public interface OnDownLoadCallback {
void onComplete(String message);
void onFail();
}
在Interface定義有下載成功與失敗
DownLoadService.java
public class DownLoadService {
private OnDownLoadCallback mDownLoadcallback;
public DownLoadService(OnDownLoadCallback callback) {
this.mDownLoadcallback = callback;
}
//模擬一個八秒的下載
public void startDownLoad() {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(8000);
mDownLoadcallback.onComplete("完成囉!");
} catch (InterruptedException e) {
mDownLoadcallback. onFail();
}
}
});
thread.start();
}
}
在該下載程式一開始註冊這個CallBack來使用
MainActivity.java
public class MainActivity extends AppCompatActivity implements OnDownLoadCallback {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DownLoadService downloadservice = new DownLoadService(this);
downloadservice.startDownLoad();
}
@Override
public void onComplete(String message) {
Log.i(TAG, message);
}
@Override
public void onFail() {
Log.e(TAG, "下載失敗");
}
}
最後在Main裡面去實作這個CallBack得知觸發的時候以及UI該做什麼事情